public class No044 {
    /**
     * 数字序列中某一位的数字
     * 数字以0123456789101112131415。。。的格式系列化到一个字符序列中。
     * 在这个系列中，第5位（从0开始计数）是5，第13位是1，第19位是4，等等
     * 请写一个函数，求任意第n位对应的数字。
     */
    public static int NumOfArray(int n) {
        // base：数字个数   digits：位数
        long base = 9, digits = 1;
        while (n - base * digits > 0) {
            n -= base * digits;
            base *= 10;
            digits++;
        }

        //idx：第n位数是number的第几位数字
        long idx = n % digits, number;
        if (idx == 0) {
            number = (int) Math.pow(10, digits - 1) + n / digits - 1;
        } else {
            number = (int) Math.pow(10, digits - 1) + n / digits;
            for (long i = 0; i < digits - idx; i++) {
                number /= 10;
            }
        }
        return (int) number % 10;
    }

    public static void main(String[] args) {
        System.out.println(NumOfArray(1001));
    }
}
